// node 11_Promise异步踩坑.js

//setTimeout    计时器
//setInterval   定时器
//new Date()    获取当前时间戳
//Promise       *
//event loop（事件循环）   *  一次事件循环为一个宏任务和它产生所有微任务(包括微任务产生的微任务)的执行过程
//宏任务 和 微任务         *  在同一个宏任务下，微任务优先级高于宏任务；每一个宏任务绑定一个了自己独有的微任务队列

let date = new Date()

console.log(1,new Date() - date) //同步代码，直接输出

setTimeout(data => {
    return console.log(2,new Date() - date) //宏任务，任务被放到宏任务队列
},500)


Promise.resolve().then(console.log(3,new Date() - date))//能够立即执行的语句为同步任务

Promise.resolve().then(()=>{
    console.log(4,new Date() - date) //回调函数为异步微任务，任务被放到微任务队列
})

while(new Date() - date < 1000){} // 等待一秒
console.log(5,new Date() - date) //同步代码，直接输出